package com.gobang.domain.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 游戏房间实体类
 * 对应数据库表：game_rooms
 * 
 * @author gobang
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("game_rooms")
public class GameRoom {

    /**
     * 房间ID - 主键（字符串格式，如room_20231229_001）
     */
    @TableId(value = "id", type = IdType.INPUT)
    private String id;

    /**
     * 黑方玩家ID
     */
    @TableField("black_player_id")
    private Long blackPlayerId;

    /**
     * 白方玩家ID
     */
    @TableField("white_player_id")
    private Long whitePlayerId;

    /**
     * 当前回合（BLACK/WHITE）
     */
    @TableField("current_turn")
    private String currentTurn;

    /**
     * 游戏状态（WAITING/PLAYING/FINISHED/CANCELLED）
     */
    @TableField("game_status")
    private String gameStatus;

    /**
     * 获胜者ID
     */
    @TableField("winner_id")
    private Long winnerId;

    /**
     * 总步数
     */
    @TableField("total_moves")
    private Integer totalMoves;

    /**
     * 结束原因（FIVE_IN_ROW/SURRENDER/TIMEOUT/CANCELLED）
     */
    @TableField("end_reason")
    private String endReason;

    /**
     * 游戏开始时间
     */
    @TableField("started_at")
    private LocalDateTime startedAt;

    /**
     * 游戏结束时间
     */
    @TableField("ended_at")
    private LocalDateTime endedAt;

    /**
     * 创建时间
     */
    @TableField(value = "created_at", fill = FieldFill.INSERT)
    private LocalDateTime createdAt;

} 